package com.shuai.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shuai.model.bo.AllotBo;
import com.shuai.model.po.SysPermission;
import com.shuai.model.query.SysPermissionQuery;
import com.shuai.model.vo.SysPermissionVo;
import com.shuai.model.vo.SysRouterVO;
import com.shuai.utils.tree.SysTreeVo;

import java.util.List;

/**
 * 权限信息 服务类
 *
 * @author shuai
 * @since 2022
 */
public interface SysPermissionService extends IService<SysPermission> {


    /**
     * 添加权限信息
     * @param sysPermission
     * @return
     */
    Integer addSysPermission(SysPermission sysPermission);

    /**
     * 删除权限信息
     * @param query
     * @return
     */
    Integer deleteSysPermission(SysPermissionQuery query);

    /**
     * 更新权限信息
     * @param sysPermission
     * @return
     */
    Integer editSysPermission(SysPermission sysPermission);


    /**
     * 全部查询
     * @param query
     * @return
     */
    List<SysPermissionVo> selectList(SysPermissionQuery query);

    /**
     * 分页查询
     * @param query
     * @return
     */
    IPage<SysPermissionVo> selectPage(SysPermissionQuery query);

    /**
     * 查询详细
     * @param id
     * @return
     */
    SysPermissionVo selectById(Long id);

    /**
     * 查询用户菜单
     * @param roles
     * @return
     */
    List<SysRouterVO> getUserMenuInfo(List<Long> roles);

    /**
     * 查询权限树
     * @param query
     * @return
     */
    List<SysPermissionVo> selectTreeList(SysPermissionQuery query);

    /**
     * 查询权限树
     * @param query
     * @return
     */
    List<SysTreeVo> selectPermissionTree(SysPermissionQuery query);

    /**
     * 查询角色权限信息和权限列表
     * @param roleId
     * @return
     */
    AllotBo selectRolePermissionList(Long roleId);

}
